package com.example.headfirstprojectdemo.StrategyPattern;

public abstract class Duck {


   FlyBehaviour flyBehaviour;
   QuackBehaviour quackBehaviour;

    public abstract  void display();

    /**
     * 鸭子叫声 。 委托给别人处理
     */
    public void performQuack(){
        quackBehaviour.quack();
    }

    /**
     * 鸭子飞行动作 。 委托给别人处理
     */
    public void performFly(){
        flyBehaviour.fly();
    }

    public void setFlyBehaviour(FlyBehaviour flyBehaviour) {
        this.flyBehaviour = flyBehaviour;
    }

    public void setQuackBehaviour(QuackBehaviour quackBehaviour) {
        this.quackBehaviour = quackBehaviour;
    }
}
